package com.itheima.homework;

/*
    将以下描述信息转换为java代码，实现打印结果如下：

    销售部的:张小强,员工编号: M001
    他的职员是李小亮

    销售部的:李小亮,员工编号: C001
    他的经理是张小强

    1、定义员工Employee类,该类具有如下成员
        (1) 属性：姓名(name,字符串类型)，工号(workId,字符串类型)，部门(dept,字符串类型),属性私有
        (2) 行为:
            1. 空参数构造和满参数构造
            2. 提供属性的set/get方法
            3. 定义showMsg方法抽象方法

    2、定义经理Manager类继承Employee类，该类具有如下成员:
        (1) 属性:职员Clerk(该经理的职员)
        (2) 方法:
                1. 空参数构造方法和满参数构造方法
                2. 属性的get和set方法
                3. 重写父类的showMsg方法，按照要求实现信息打印

    3、定义职员Clerk类继承Employee类，该类具有如下成员:
        (1) 属性:经理Manager(该职员的经理)
        (2) 方法:
                1. 空参数构造方法和满参数构造方法
                2. 属性的get和set方法
                3. 重写父类的showMsg方法，按照要求实现信息打印

    4、创建Test测试类，测试类中创建main方法，main方法中创建经理对象和职员对象，信息分别如下:
        经理：工号为 M001,名字为 张小强，部门为 销售部
        职员：工号为 C001,名字为 李小亮，部门为 销售部
        经理的职员为李小亮，职员的经理为张小强

    分别调用经理的showMsg方法和职员的showMsg方法打印结果：
    销售部的:张小强,员工编号: M001
    他的职员是李小亮

    销售部的:李小亮,员工编号: C001
    他的经理是张小强


 */
public class Test {
    public static void main(String[] args) {
//        // 创建经理类对象
//        Manager manager = new Manager("张小强" , "M001" , "销售部" , null);
//        // 创建职员对象
//        Clerk clerk = new Clerk("李晓亮" , "C001" , "销售部" , manager);
//        manager.setClerk(clerk);

        Manager manager = new Manager(); // 0x001
        Clerk clerk = new Clerk();       // 0x002 {李晓亮 , C001 , 销售部}

        manager.setName("张小强");
        manager.setWorkId("M001");
        manager.setDept("销售部");

        clerk.setName("李晓亮");
        clerk.setWorkId("C001");
        clerk.setDept("销售部");

        manager.setClerk(clerk);
        clerk.setManager(manager);


        manager.showMsg();
        clerk.showMsg();


    }
}
